package gogocache

//ByteView 选择 byte 类型是为了能够支持任意的数据类型的存储，例如字符串、图片等
type ByteView struct {
	Bytes []byte
}

// Len 实现Value的接口
func (v ByteView) Len() int {
	return len(v.Bytes)
}

// ByteSlice 返回一个slice引用，防止底层数据结构被修改
func (v ByteView) ByteSlice() []byte {
	return cloneBytes(v.Bytes)
}

// String 将字节数组转化为字符串
func (v ByteView) String() string {
	return string(v.Bytes)
}

func cloneBytes(b []byte) []byte {
	c := make([]byte, len(b))
	copy(c, b)
	return c
}
